package org.jiamandan.com.config;

import cn.hutool.extra.spring.SpringUtil;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.timeout.IdleStateEvent;
import io.netty.handler.timeout.IdleStateHandler;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * @version Revision 1.0.1
 * @版权：版权所有 (c) 2021
 * @see:
 * @创建日期：2023-11-28 02:30
 * @功能说明：
 * @begin
 * @修改记录:
 * @修改后版本 修改人        修改内容
 * @2023-11-28 02:30	         Lee        	创建
 * @end
 */
@ChannelHandler.Sharable
@Slf4j
public class NettyIdleStateHandler extends IdleStateHandler {

    private static final NettyProperties nettyProperties;

    static {
        nettyProperties = SpringUtil.getBean(NettyProperties.class);
       // rocketMQTemplate = SpringUtil.getBean(RocketMQTemplate.class);
    }

    public NettyIdleStateHandler() {
        // 读超时时间、写超时时间、读写超时时间 指定0值不判断超时
        super(nettyProperties.getIdleTime(), 0, 0, TimeUnit.SECONDS);
    }

    @Override
    protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt) {
        log.error(nettyProperties.getIdleTime() + "秒内没有读到数据，开始处理链接检测");
        String payload = ctx.channel().id().asShortText();
    }
}
